package com.aaa.dang.modules.user.service;

import com.aaa.dang.common.util.ResultModel;

import java.util.List;
import java.util.Map;

/**
 * @author JinChaoLiang
 * @calss QY87
 * @description 描述
 * @date 2018/12/14
 */
public interface IUserService {

    /**
     * 得到所有用户和房间信息
     * @return
     */
    ResultModel getList(Map<String,Object> query);
    /**
     * 得到所有用户和房间信息
     * @return
     */
    Integer getCount();

    /**
     * 得到某条记录的详细信息
     * @param id
     * @return
     */
    Map<String,Object> getInfoById(int id);

    ResultModel login(String username, String psw);


    /***
     * 手机号唯一性校验
     * @param username
     * @return
     */
    ResultModel checkPhone(String username);

    /***
     * 注册用用户
     * @param username
     * @param password
     * @return
     */
    ResultModel addUser(String username, String password);



    /**
     * 手机端修改密码
     * @param map
     * @return
     */
    ResultModel updatepsw(Map<String, Object> map);


    /**
     * 手机端完善资料
     * @param map
     * @return
     */
    ResultModel updateinfo(Map<String, Object> map);

    /**
     * 手机端得到部分信息
     * @return
     */
    ResultModel getUserPartialInfo(String username);


    /**
     * 得到密码
     * @param query
     * @return
     */
    ResultModel findpassword(Map<String,Object> query);

    /***
     * 获得所有小区
     * @return
     */
    ResultModel getAllArea();

    /***
     * 根据小区id获得楼栋
     * @param id
     * @return
     */
    ResultModel getBuildingsByAreaId(Integer id);

    /**
     * 根据楼栋id获得所有房间
     * @param id
     * @return
     */
    ResultModel getRoomsByBuildingId(Integer id);

    /***
     * 根据条件查询空余房间
     * @param data
     * @return
     */
    ResultModel getRoomsByQuery(Map<String, Object> data);

    /***
     * 添加维修申请
     * @param data
     * @return
     */
    ResultModel addRepairapply(Map<String, Object> data);

    /***
     * 获得用户申请数据
     * @param userId
     * @return
     */
    ResultModel getRepairApplyByUserId(Integer userId);

    /***
     * 修改报修申请状态
     * @param data
     * @return
     */
    ResultModel updateStatusById(Map<String, Object> data);

    /***
     * 根据用户id获得该用户的入住申请
     * @param userId
     * @return
     */
    ResultModel getStayApplyByUserId(Integer userId);

    /***
     * 用户撤回入住申请
     * @param data
     * @return
     */
    ResultModel updateStayApplyStatus(Map<String, Object> data);

    /***
     * 根据用户id获得用户的申请退宿记录
     * @param userId
     * @return
     */
    ResultModel getRetireApply(Integer userId);

    /***
     * 用户退宿撤回
     * @param data
     * @return
     */
    ResultModel updateRetireApplyStatus(Map<String, Object> data);

    /***
     * 根据用户id获得用户的申请交押金记录
     * @param userId
     * @return
     */
    ResultModel getDepositApply(Integer userId);

    /***
     * 撤回押金申请
     * @param map
     * @return
     */
    ResultModel updateDepositApplyStatus(Map<String, Object> map);
    /***
     * 根据用户id获得用户的申请交租金记录
     * @param userId
     * @return
     */
    ResultModel getPayRentApply(Integer userId);

    /***
     * 撤回租金申请
     * @param map
     * @return
     */
    ResultModel updatePayRentApplyStatus(Map<String, Object> map);

    /**
     * 通过id得到用户信息
     * @param id
     * @return
     */
    ResultModel getUser(int id);
}
